gl renderer: Remove homegrown transform_bounds code
authorTimm Bäder <mail@baedert.org>
Sun, 2 Jun 2019 09:39:25 +0000 (11:39 +0200)
committerTimm Bäder <mail@baedert.org>
Sun, 2 Jun 2019 09:43:06 +0000 (11:43 +0200)
GskTransform can do this for us now.

gsk/gl/gskglrenderer.c
gsk/gl/gskglrenderops.c

index 4f448bc8f3d6d7163799698b30b4ba295130f655..0cced099f7d2181b0063cc8a99148b7802e37010 100644 (file)
@@ -877,9 +877,6 @@ render_transform_node (GskGLRenderer   *self,
 
     case GSK_TRANSFORM_CATEGORY_2D_AFFINE:
       {
-        graphene_matrix_t mat;
-
-        gsk_transform_to_matrix (node_transform, &mat);
         ops_push_modelview (builder, node_transform);
         gsk_gl_renderer_add_render_ops (self, child, builder);
         ops_pop_modelview (builder);
index 9c99fba9150b70d5d23350d091029949e5db26e8..d06ecc5c8f981892d7f524c69d9059badb570af7 100644 (file)
@@ -113,11 +113,16 @@ extract_matrix_metadata (GskTransform      *transform,
       md->scale_y = 1;
     break;
 
+    case GSK_TRANSFORM_CATEGORY_2D_AFFINE:
+      gsk_transform_to_affine (transform,
+                               &md->scale_x, &md->scale_y,
+                               &md->translate_x, &md->translate_y);
+    break;
+
     case GSK_TRANSFORM_CATEGORY_UNKNOWN:
     case GSK_TRANSFORM_CATEGORY_ANY:
     case GSK_TRANSFORM_CATEGORY_3D:
     case GSK_TRANSFORM_CATEGORY_2D:
-    case GSK_TRANSFORM_CATEGORY_2D_AFFINE:
       {
         graphene_vec3_t col1;
         graphene_vec3_t col2;
@@ -125,8 +130,8 @@ extract_matrix_metadata (GskTransform      *transform,
 
         gsk_transform_to_matrix (transform, &m);
 
-        /* TODO: Is this event possible (or correct) now that we use a GskTransform here? */
-
+        /* TODO: 90% sure this is incorrect. But we should never hit this code
+         * path anyway. */
         md->translate_x = graphene_matrix_get_value (&m, 3, 0);
         md->translate_y = graphene_matrix_get_value (&m, 3, 1);
 
@@ -161,27 +166,7 @@ ops_transform_bounds_modelview (const RenderOpBuilder *builder,
 
   head = &g_array_index (builder->mv_stack, MatrixStackEntry, builder->mv_stack->len - 1);
 
-  switch (gsk_transform_get_category (head->transform))
-    {
-    case GSK_TRANSFORM_CATEGORY_IDENTITY:
-      *dst = *src;
-      break;
-
-    case GSK_TRANSFORM_CATEGORY_2D_TRANSLATE:
-      *dst = *src;
-      dst->origin.x += head->metadata.translate_x;
-      dst->origin.y += head->metadata.translate_y;
-      break;
-
-    /* TODO: Handle scale */
-    case GSK_TRANSFORM_CATEGORY_UNKNOWN:
-    case GSK_TRANSFORM_CATEGORY_ANY:
-    case GSK_TRANSFORM_CATEGORY_3D:
-    case GSK_TRANSFORM_CATEGORY_2D:
-    case GSK_TRANSFORM_CATEGORY_2D_AFFINE:
-    default:
-      gsk_transform_transform_bounds (builder->current_modelview, src, dst);
-    }
+  gsk_transform_transform_bounds (builder->current_modelview, src, dst);
 
   dst->origin.x += builder->dx * head->metadata.scale_x;
   dst->origin.y += builder->dy * head->metadata.scale_y;
@@ -433,14 +418,15 @@ ops_push_modelview (RenderOpBuilder *builder,
   if (G_LIKELY (builder->mv_stack->len >= 2))
     {
       const MatrixStackEntry *cur;
-      GskTransform *t;
+      GskTransform *t = NULL;
 
       cur = &g_array_index (builder->mv_stack, MatrixStackEntry, builder->mv_stack->len - 2);
       /* Multiply given matrix with current modelview */
 
-      t = gsk_transform_transform (cur->transform, transform);
-      t = gsk_transform_translate (t, &(graphene_point_t) { builder->dx * scale, builder->dy * scale });
+      t = gsk_transform_translate (cur->transform, &(graphene_point_t) { builder->dx * scale, builder->dy * scale});
+      t = gsk_transform_transform (t, transform);
       entry->transform = t;
+
     }
   else
     {